package com.cskaoyan.javase.oop.homework6;

/**
 * @description: 作业3
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 3,定义一个表示学生信息的类Student，要求如下：
 *  　（1）类Student的成员变量：
 *         id表示学号；name表示姓名；gender表示性别；age表示年龄；java表示Java课程成绩。
 *    （2) 在定义一个print()方法，输出student对象的 name，gender，age，java的值(即输出学生信息)
 *    （3）根据类Student的定义，创建五个该类的对象，输出每个学生的信息，计算并输出这五个学生Java语言成绩的平均值，
 *         提示： 数组既可以存储基本数据类型的值，也可以存储引用数据类型的值
 *                因此，5个Student对象可以放在一个Student数组中
 *                Student[] students = new Student[5];
 *                students[1] = student对象的引用
 *      //求平均值可以通过循环遍历 students数组来完成
 *
 */
public class Demo2 {
    public static void main(String[] args) {
        //创建五个对象
        JavaStudent js1 = new JavaStudent("张三", 100);
        JavaStudent js2 = new JavaStudent("李四", 90);
        JavaStudent js3 = new JavaStudent("王二", 80);
        JavaStudent js4 = new JavaStudent("麻子", 70);
        JavaStudent js5 = new JavaStudent("狗蛋", 80);
        //输出五个对象信息，计算平均值
        JavaStudent[] students = new JavaStudent[5];
        //对象怎么放进数组中？
        //只能把对象的引用放进数组中，也就是对象的真实地址
        students[0] = js1;
        students[1] = js2;
        students[2] = js3;
        students[3] = js4;
        students[4] = js5;

        //遍历数组调用方法
        //定义成绩和
        double sum = 0;
        for (int i = 0; i < students.length; i++) {
            System.out.print("第" + (i + 1) + "个学生信息为：");//兄弟们 我做的对吗？
            students[i].print();
            sum += (students[i].java);

        }
        System.out.println("平均成绩是:" + (sum / 5));

        //思考，如果我想把求平均成绩提取出一个方法，这个方法应该放在哪里？
        //能够直接放在JavaStudent类中作为成员方法吗？
        //对象只关心自己的对象的事情，打印对象本身，对对象的成员变量做一些操作
        //System.out.println(getAverage(js1, js2));
        System.out.println(StudentTools.getAverage(js1, js2));

    }


}

class JavaStudent {
    int id;
    String name;
    String gender;
    int age;
    double java;

    public void print() {
        System.out.println("该学生名字为" + name + "Java成绩为" + java);
    }

    public JavaStudent() {
    }

    public JavaStudent(String name, double java) {
        this.name = name;
        this.java = java;
    }

    public JavaStudent(int id, String name, String gender, int age, double java) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.java = java;
    }
}

//学生工具类
class StudentTools {
    public static double getAverage(JavaStudent... jss) {
        double sum = 0;
        double average = 0;
        for (int i = 0; i < jss.length; i++) {
            sum += (jss[i].java);
        }
        average = sum / jss.length;
        return average;
    }
}